/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import dao.DAOPersonne;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.Enseignant;
import model.Etudiant;
import model.Personne;
import utils.SaisieUtils;
import utils.TypeUtilisateur;

/**
 *
 * @author Paul
 */
public class Connexion extends HttpServlet {

    /**
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            this.doAny(request, response);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void doAny(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException {
        /*
         * Récuparation du login et du mot de passe
         */
        String login = request.getParameter("pseudo");
        String mdp = request.getParameter("password");
        /*
         * On recherche l'utilisateur :
         * Si il existe, on le redirige vers la page du menu
         * Sinon on lui remet la page de connexion
         */
        DAOPersonne daoPers = new DAOPersonne();
        Personne pers = daoPers.rechercheUtilisateur(login, mdp);
        //Si l'utilisateur a été trouvé
        if (pers != null) {
            if (TypeUtilisateur.isTypeOf(pers.getTypeUtilisateur())) {
                HttpSession session = request.getSession(true);
                //session.setAttribute("connexion", "Vous êtes connecté : " + pers.getNom() + " " + pers.getPrenom());
                session.setAttribute("personne", pers);
                if (TypeUtilisateur.ENSEIGNANT.getNomTypeUtilisateur().equals(pers.getTypeUtilisateur())) {
                    Enseignant e = new Enseignant(pers);
                    session.setAttribute("enseignant", e);
                    request.getRequestDispatcher("index.jsp").forward(request, response);
                } else if (TypeUtilisateur.ETUDIANT.getNomTypeUtilisateur().equals(pers.getTypeUtilisateur())) {
                    Etudiant e = new Etudiant(pers);
                    session.setAttribute("etudiant", e);
                    request.getRequestDispatcher("index.jsp").forward(request, response);
                }
            } else {
                Logger.getLogger(Connexion.class.getName()).log(Level.SEVERE, "Utilisateur sans type");
                request.getRequestDispatcher("view/connexion.jsp").forward(request, response);
            }
        } //Si l'utilisateur n'a pas été trouvé
        else {
            //Si les deux champs n'ont pas été rempli
            if (!(SaisieUtils.isNotEmptyLogin(login)) && !(SaisieUtils.isNotEmptyPassword(mdp))) {
                request.setAttribute("message", "Veuiller remplir tous les champs.");
                request.getRequestDispatcher("view/connexion.jsp").forward(request, response);
            } //Sinon un des deux champs n'a pas été rempli OU un des deux champs n'est pas correct
            else {
                if ((SaisieUtils.isNotEmptyLogin(login)) && !(SaisieUtils.isNotEmptyPassword(mdp))) {
                    request.setAttribute("message", "Votre mot de passe est vide.");
                    request.getRequestDispatcher("view/connexion.jsp").forward(request, response);
                } else if ((!SaisieUtils.isNotEmptyLogin(login)) && !(SaisieUtils.isNotEmptyPassword(mdp))) {
                    request.setAttribute("message", "Votre login est vide.");
                    request.getRequestDispatcher("view/connexion.jsp").forward(request, response);
                } else {
                    request.setAttribute("message", "Votre login ou mot de passe est incorrect.");
                    request.getRequestDispatcher("view/connexion.jsp").forward(request, response);
                }
            }
        }
    }
}
